/* Pide memoria para los tableros necesarios, recibe un puntero a tipoJuego */
int
creaTablero(tipoJuego *juego)
{
        int ret;
	int i;
	int j;

	pideParam(&(juego->parametros));

	ret=pideMem(&(juego->tablero1),juego->parametros);
	if(ret==NO_ERROR)
	{	
		juego->tablero1->cols=juego->parametros.columnas;
        	juego->tablero1->fils=juego->parametros.filas;
	}

	if(juego->parametros.opcion==MODO_DOSJ)
	{
		ret=pideMem(&(juego->tablero2), juego->parametros);
		if(ret==NO_ERROR)
		{
			juego->tablero2->cols=juego->parametros.columnas;
        		juego->tablero2->fils=juego->parametros.filas;
		}
	}

	else if(juego->parametros.opcion == MODO_NORMAL || juego->parametros.opcion == MODO_TIEMPO)
	{
	      	ret=pideMem(&(juego->tableroUndo), juego->parametros);
		if(ret==NO_ERROR)
		{
			juego->tableroUndo->cols=juego->parametros.columnas;
        		juego->tableroUndo->fils=juego->parametros.filas;
		}

	}


	if(ret==NO_MEM)
		printf("No hay suficiente memoria para correr el juego\n");

        return ret;
}

/* Reserva memoria para un tablero */
int pideMem(tipoTablero **tablero, tipoParametros parametros)
{
	int i,j;

	*tablero = malloc(sizeof(tipoTablero));
	if(*tablero == NULL)
		return NO_MEM;

	(*tablero)->matriz = malloc((parametros.filas)*sizeof(int*));
	if((*tablero)->matriz == NULL)
	{
		free(*tablero);
		return NO_MEM;
	}

	for(i = 0; i < parametros.filas; i++)
	{
		(*tablero)->matriz[i] = malloc((parametros.columnas)*sizeof(int));
		if((*tablero)->matriz[i] == NULL)
		{
			for(j = 0; j < i; j++)
				free((*tablero)->matriz[j]);
			free((*tablero)->matriz);
			free(*tablero);
			return NO_MEM;
		}
	}
		return NO_ERROR;
}
